home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vcls / rrsql60.000 / rrsqlint.pas < prev   
Pascal/Delphi Source File  |  1996-04-08  |  18KB  |  470 lines

  1. { Demo of interfacing Delphi to a DLL }
  2. { Needs R&R Report Writer - SQL Edition V6.0 - Concentric Data Systems, Inc.}
  3.  
  4. { Borland Delphi Interface Unit To R&R Runtime DLL }
  5. { Author : Chris Brooksbank (cbrooksbank@cix.compulink.co.uk) }
  6. { June 13th 1995 }
  7. { Version 1.1 }
  8.  
  9. { You are free to distribute and use this file as you wish with this header }
  10. { Please email any comments/enhancements to cbrooksbank@msn.com }
  11.  
  12. { October 1995 function prototypes marked as far }
  13.  
  14. unit RRSQLInt;
  15.  
  16. interface
  17.  
  18. uses WinTypes;
  19.  
  20. { ************* Sample code to run a report ************************ }
  21. { ****************************************************************** }
  22.  
  23. { ************* Initialisation and cleanup functions/ run report ******* }
  24. function InitRunTimeInstance: Boolean;far;
  25.   { You must call this function first. It initialises an instance of the
  26.     R&R runtime DLL }
  27. function EndRunTimeInstance: Boolean;far;
  28.   { Call this function to cleanup after you have finished using the R&R
  29.     runtime DLL }
  30. function EndReport(hReport: Integer): Boolean;far;
  31.   { Free resources allocated to a report. Always call after using a report. }
  32. function  ChooseReport(MyApp,LibName,RepName:PChar;Size: Integer): Integer;far;
  33.   { Given a report library and report name return a handle to this report.
  34.     Most functions need a hReport param. That is what this function returns.
  35.     If RepName is NIL interactively asks for report from menu }
  36. function  GetNewReportHandle(MyApp: PChar): Integer;far;
  37.   { Another way of getting a report handle. This is a handle to a empty
  38.     report information structure. Use ChooseReport in preference to this }
  39. function  execRuntime(hReport:Integer;Wait:Boolean;cmdShow: Integer;
  40.                       ECode: PInteger;PageCount: PLongInt;
  41.                       EMsg:Pchar;Emsgsizeof: Integer): Boolean;far;
  42.    { After getting a report handle and amending any settings call this
  43.      function to actually run the report
  44.      cmdShow can be sw_hide,sw_minimize,sw_restore,sw_show,sw_showmaximized,
  45.                     sw_showminimized,sw_showminnoactive,sw_showna,
  46.             sw_shownoactive,sw_shownormal
  47.             ie any Windows API ShowWindow
  48.      on Return Ecode value indicates (Error message in EMsg) :
  49.      Ecode=N Successful execution of report
  50.      Ecode=C User cancelled the report Emsg="Report canceled"
  51.      Ecode=J Report structure pointed to by hReport is incorrect/corrupt
  52.      Ecode=R Report began to execute but failed to complete. }
  53. { ********************************************************************** }
  54.  
  55.  
  56. { ********************************************************************** }
  57. { Getting information about R&R errors }
  58. function GetErrorInfo(Msg:PChar;MsgSize:Integer;ErrCode:PInteger): Boolean;far;
  59.   { Get error message and code returned by last DLL call }
  60.   { ErrCode can be :
  61.     C=Cancel. User cancelled a dialog box presented by the R&R DLL
  62.     D=Diagnostic. Misc. error such as out of memory
  63.     I=Iteration. No more values for requested getfirst or getnext function
  64.     J=Job Control. Problem with specified runtime control file
  65.     L=Library.Problem with report library being accessed
  66.     S=Syntax error.
  67.     V=Value. No value available for specified paramater.}
  68. function resetErrorInfo: Boolean;far;
  69.   { Clear out the last error message }
  70. { ********************************************************************** }
  71.  
  72.  
  73. { Which page to start printing at }
  74. function  GetBeginPage(hReport: Integer;BeginPage: Plongint): Boolean;far;
  75. function  SetBeginPage(hReport: Integer;lBeginPage: longint): Boolean;far;
  76.  
  77. { Which page to end printing at }
  78. function  GetEndPage(hReport:Integer;EndPage: Plongint): Boolean;far;
  79. function  SetEndPage(hReport: Integer;EndPage: LongInt): Boolean;far;
  80.  
  81. { How many copies of report to print }
  82. function  GetCopies(hReport: Integer;Copies: PInteger): Boolean;far;
  83. function  SetCopies(hReport: Integer;Copies: Integer): Boolean;far;
  84.  
  85. { Data source for report }
  86. function  ChooseDataSource(hReport:Integer;DataSource:PChar;Size:Integer): Boolean;far;
  87.   { Interactive choosing by user }
  88. function  SetDataSource(hReport: Integer;DataSource: PChar): Boolean;far;
  89. function  GetDataSource(hReport: Integer;DataSource: PChar): Boolean;far;
  90.  
  91. { Should R&R display errors on the screen ? }
  92. function SetDisplayErrors(hReport:Integer;DispErr: Boolean): Boolean;far;
  93. function GetDisplayErrors(hReport:Integer;DispErr: Pbool): Boolean;far;
  94.  
  95. { Should R&R display a status window as the report is being generated ? }
  96. function SetDisplayStatus(hReport:Integer;DispStatus: Boolean): Boolean;far;
  97. function GetDisplayStatus(hReport:Integer;DispStatus:PBool): Boolean;far;
  98.  
  99. { Export destination }
  100. { D=Display
  101.   F=File
  102.   P=Printer }
  103. function SetExportDest(hReport:Integer;Val: char ): Boolean;far;
  104. function GetExportDest(hReport:Integer;Val: PChar): Boolean;far;
  105.  
  106. { View/alter the filter the report will use }
  107. function setFilter(hReport:Integer;Filter: PChar): Boolean;far;
  108. function getFilter(hReport:Integer;Filter:Pchar;Size:Integer): Boolean;far;
  109.  
  110. { Which filter to use }
  111. { S=use filter saved with report
  112.   E=dont use any filter. Use entire recordset
  113.   O=Use filter specified with setfilter()
  114.   ?=Allow user to interactively design filter at runtime }
  115. function setFilterUsage(hReport:Integer;Val:Char): Boolean;far;
  116. function getFilterUsage(hReport:Integer;Val: PChar): Boolean;far;
  117.  
  118. { get/set the main table to be used in the report }
  119. function setMasterTableName(hReport:Integer;FileName:PChar): Boolean;far;
  120. function getMasterTableName(hReport:Integer;Filename: PChar;Size: Integer): Boolean;far;
  121.  
  122. { get/set the ASCII memo file to use in the report }
  123. function setMemoName(hReport:Integer;Path:Pchar): Boolean;far;
  124. function getMemoName(hReport:Integer;Path:PChar;Size:Integer): Boolean;far;
  125.  
  126. { get/set the Report output destination }
  127. { D=Display
  128.   A/T=Text File - set by setOutputFile
  129.   P=Printer
  130.   W=Worksheet File
  131.   X=XBASE file
  132.   ?=Interactive at runtime }
  133. function setOutputDest(hReport:Integer;Dest:Char): Boolean;far;
  134. function getOutputDest(hReport:Integer;Dest:Pchar): Boolean;far;
  135.  
  136. { Filename to output report to }
  137. function setOutputFile(hReport:Integer;Name:Pchar): Boolean;far;
  138. function getOutputFile(hReport:Integer;Name:PChar;Size: Integer): Boolean;far;
  139.  
  140. { Allow user to interactively select the printer to use }
  141. { can later pass selected name to setPrinter }
  142. function ChoosePrinter(hReport:Integer;Printer:PChar;SizePrinter:Integer;
  143.                    PortName:PChar;SizePort:Integer): Boolean;far;
  144.  
  145. { Get/set printer name associated with the report }
  146. function getPrinter(hReport:Integer;PrinterName: PChar;Size: Integer): Boolean;far;
  147. function setPrinter(hReport:Integer;PrinterName: PChar): Boolean;far;
  148.  
  149. { Set the parent window of the preview window by passing the window handle }
  150. function SetWinParentHandle(hReport:Integer;hParent:Integer): Boolean;far;
  151.  
  152. { Replace the default data directory specified in RSW.INI }
  153. function SetDataDir(hReport:Integer;Dir:PChar): Boolean;far;
  154.  
  155. { Get/set functions for group fields }
  156. function GetFirstGroupField(hReport:Integer;Name:PChar;Size:Integer): Boolean;far;
  157. function GetNextGroupField(hReport:Integer;Name:PChar;Size:Integer):  Boolean;far;
  158. { GetErrorInfo() returns 'I' in 3rd param when no more in list }
  159. function SetGroupField(hReport:Integer;Name:Pchar;GroupNum:Integer): Boolean;far;
  160. { Need to setgroupfields 1..last one to modify }
  161.  
  162. { Replace the default image directory as stored in RSW.INI }
  163. function SetImageDir(hReport:Integer;Dir:PChar): Boolean;far;
  164.  
  165. { Get/Set printer port }
  166. function GetPrinterPort(hReport:Integer;PortName:PChar;Size:Integer): Boolean;far;
  167. function SetPrinterPort(hReport:Integer;Port:PChar): Boolean;far;
  168.  
  169. { R=User prompted to select a report from current report library
  170.   ?=User prompted to pick a succession of reports }
  171. function GetReportPick(hReport:Integer;Pickflag:PChar): Boolean;far;
  172. function SetReportPick(hReport:Integer;Pickflag:Char): Boolean;far;
  173.  
  174. { Functions to get/set sort fields }
  175. function GetFirstSortField(hReport:Integer;Name:PChar;Size:Integer): Boolean;far;
  176. function GetNextSortField(hReport:Integer;Name:PChar;Size:Integer): Boolean;far;
  177. { GetErrorInfo() returns 'I' in 3rd param when no more in list }
  178. function SetSortField(hReport:Integer;Name:PChar;SortNum:Integer): Boolean;far;
  179.  
  180. { Get field names available to report }
  181. function GetFirstFieldName(hReport:Integer;FieldName:PChar;FnSize:Integer): Boolean;far;
  182. function GetNextFieldName(hReport:Integer;FieldName:PChar;Fnsize:Integer): Boolean;far;
  183. { GetErrorInfo() returns 'I' in 3rd param when no more in list }
  184.  
  185. { Allow user to interactively select a table,database and datasource }
  186. function ChooseTable(hReport:Integer;Table:PChar;SizeofTable:Integer;
  187.                   DataSource:PChar;SizeOfDataSource:Integer;
  188.               DataBase:PChar;SizeOfDataBase:Integer): Boolean;far;
  189.  
  190.  
  191. { Get/set functions for join informations. Main table & related alias name.}
  192. function GetFirstJoinInfo(hReport:Integer;TableName:PChar;
  193.                       TableSize:Integer;Alias:PChar;
  194.               AliasSize:Integer): Boolean;far;
  195. function GetNextJoinInfo(hReport:Integer;TableName:PChar;
  196.                            TableSize:Integer;Alias:PChar;
  197.              AliasSize:Integer): Boolean;far;
  198. { GetErrorInfo() returns 'I' in 3rd param when no more in list }
  199. function setJoinInfo(hreport:Integer;TableName:PChar;
  200.                  AliasName:PChar;AliasNum:Integer): Boolean;far;
  201.  
  202.  
  203.  
  204. { Get/set user paramaters }
  205. function GetFirstUserParam(hReport:Integer;PName:PChar;PNameSize:Integer;
  206.                        PValue:PChar;PValueSize:Integer): Boolean;far;
  207. function GetNextUserParam(hReport:Integer;PName:PChar;PNameSize:Integer;
  208.                        PValue:PChar;PValueSize:Integer): Boolean;far;
  209. { GetErrorInfo() returns 'I' in 3rd param when no more in list }
  210. function SetUserParam(hReport:Integer;Name:PChar;Value:PChar): Boolean;far;
  211. { To get R&R to ask in a dialog 'Enter Your Name :' then pass a value of
  212.   "?Enter your name:"}
  213.  
  214. { Get/set functions for replaceable parts of SELECT,EXEC or DEFINE REPORTVIEW
  215.   statements. ( Those parts enclosed in <<>> e.g. :
  216.   Select <<'firstname','lastname'>> from students
  217.   where <<'firstname'<'lastname'>>}
  218. function GetFirstReplace(hReport:Integer;Replace:PChar;Size:Integer): Boolean;far;
  219. function GetNextReplace (hReport:Integer;Replace:PChar;Size:Integer): Boolean;far;
  220. { GetErrorInfo() returns 'I' in 3rd param when no more in list }
  221. function SetReplace(hReport:Integer;Replacement:PChar): Boolean;far;
  222.   { Replacement should be comma-separated list of parameters
  223.     enclosed in double angle brackets :
  224.     <<param1>>,<<param2>>,<<param3>>...<<paramn>>}
  225.  
  226.  
  227. { Should user be allowed to abort report when R&R is generating it by
  228.   clicking on a cancel button ? }
  229. function GetPreventEscape(hReport:Integer;Value:PBool): Boolean;far;
  230. function SetPreventEscape(hReport:Integer;Value:Boolean): Boolean;far;
  231.  
  232. { Get/set report library name and directory }
  233. function GetLibrary(hReport:Integer;LibName:PChar;LibNameSize:Integer): Boolean;far;
  234. function setLibrary(hreport:Integer;LibName:PChar): Boolean;far;
  235. function setLibraryDir(hReport:Integer;DirName:PChar): Boolean;far;
  236.  
  237. { Set username and password needed to connect to reports datasource }
  238. function setPassword(hReport:Integer;Password:PChar): Boolean;far;
  239. function setUserName(hReport:Integer;UserName:PChar): Boolean;far;
  240.  
  241. { Should user be offered a test pattern before real report is printed ? }
  242. function getTestPattern(hReport:Integer;Value:PBool): Boolean;far;
  243. function setTestPattern(hReport:Integer;Value:Boolean): Boolean;far;
  244.  
  245. { Read/write all configurations for current report to a ASCII file }
  246. function getRunTimeRecord(AppName:PChar;Filename:PChar): Integer;far;
  247. function writeRunTimeRecord(hReport:Integer;FileName:PChar): Boolean;far;
  248.  
  249. { Should status file be updated after every page or just at report end ? }
  250. { status file only applicable when execRuntime is passed Wait of nonzero}
  251. function getStatusEveryPage(hReport:Integer;Value:PBool):Boolean;far;
  252. function setStatusEveryPage(hReport:Integer;Value:Boolean):Boolean;far;
  253. function setStatusFileName(hReport:Integer;FileName:PChar): Boolean;far;
  254.  
  255. { Specify a where clause for insertion in the SQL statement of#
  256.   the Auto-SQL report specified by hReport . No effect on a user-SQL report }
  257. function SetWhere(hReport:Integer;Where:PChar): Boolean;far;
  258.  
  259. { Suppress title and summary areas for empty reports ? }
  260. function setSuppressTitle(hReport:Integer;Value:Boolean): Boolean;far;
  261.  
  262. { Get/set caption for runtime windows displayed by R&R runtime }
  263. function setWinTitle(hReport:Integer;Title:PChar): Boolean;far;
  264. function getWinTitle(hReport:Integer;Title:Pchar;Size:Integer): Boolean;far;
  265.  
  266. { Style of print-preview window
  267.   0=No Border
  268.   1=Fixed size & single line border
  269.   2=User can change size of preview window
  270.   3=Fixed size and double line border }
  271. function setWinBorderStyle(hReport:Integer;Style:Integer): Boolean;far;
  272.  
  273. { Should preview window have a control menu ? }
  274. function setWinControlBox(hReport:Integer;ControlBox:Boolean): Boolean;far;
  275.  
  276. { Get/set dimensions of report preview window }
  277. function setWinTop(hReport,WinTop:Integer): Boolean;far;
  278. function setWinLeft(hReport,Left:Integer): Boolean;far;
  279. function setWinWidth(hReport,WinWidth:Integer): Boolean;far;
  280. function setWinHeight(hReport,Height:Integer): Boolean;far;
  281.  
  282. { Allow minimize and maximise of preview window ? }
  283. function setWinMaxButton(hReport:Integer;AllowButton:Boolean): Boolean;far;
  284. function setWinMinButton(hReport:Integer;AllowButton:Boolean): Boolean;far;
  285.  
  286. implementation
  287.  
  288. { Tell Delphi that all the functions are stored in RSREPORT.DLL }
  289.  
  290. function initRunTimeInstance;
  291.   external 'RSREPORT';
  292. function endRunTimeInstance;
  293.   external 'RSREPORT';
  294. function endReport;
  295.   external 'RSREPORT';
  296. function chooseReport;
  297.   external 'RSREPORT';
  298. function GetNewReportHandle;
  299.   external 'RSREPORT';
  300. function execRunTime;
  301.   external 'RSREPORT';
  302. function GetErrorInfo;
  303.   external 'RSREPORT';
  304. function ResetErrorInfo;
  305.   external 'RSREPORT';
  306. function GetBeginPage;
  307.   external 'RSREPORT';
  308. function SetBeginPage;
  309.   external 'RSREPORT';
  310. function GetEndPage;
  311.   external 'RSREPORT';
  312. function SetEndPage;
  313.   external 'RSREPORT';
  314. function GetCopies;
  315.   external 'RSREPORT';
  316. function SetCopies;
  317.   external 'RSREPORT';
  318. function ChooseDataSource;
  319.   external 'RSREPORT';
  320. function SetDataSource;
  321.   external 'RSREPORT';
  322. function GetDataSource;
  323.   external 'RSREPORT';
  324. function SetDisplayErrors;
  325.   external 'RSREPORT';
  326. function GetDisplayErrors;
  327.   external 'RSREPORT';
  328. function SetDisplayStatus;
  329.   external 'RSREPORT';
  330. function GetDisplayStatus;
  331.   external 'RSREPORT';
  332. function SetExportDest;
  333.   external 'RSREPORT';
  334. function GetExportDest;
  335.   external 'RSREPORT';
  336. function setFilter;
  337.   external 'RSREPORT';
  338. function getFilter;
  339.   external 'RSREPORT';
  340. function setFilterUsage;
  341.   external 'RSREPORT';
  342. function getFilterUsage;
  343.   external 'RSREPORT';
  344. function setMasterTableName;
  345.   external 'RSREPORT';
  346. function getMasterTableName;
  347.   external 'RSREPORT';
  348. function setMemoName;
  349.   external 'RSREPORT';
  350. function getMemoName;
  351.   external 'RSREPORT';
  352. function setOutputDest;
  353.   external 'RSREPORT';
  354. function getOutputDest;
  355.   external 'RSREPORT';
  356. function setOutputFile;
  357.   external 'RSREPORT';
  358. function getOutputFile;
  359.   external 'RSREPORT';
  360. function ChoosePrinter;
  361.   external 'RSREPORT';
  362. function getPrinter;
  363.   external 'RSREPORT';
  364. function setPrinter;
  365.   external 'RSREPORT';
  366. function SetWinParentHandle;
  367.   external 'RSREPORT';
  368. function SetDataDir;
  369.   external 'RSREPORT';
  370. function getFirstGroupField;
  371.   external 'RSREPORT';
  372. function getNextGroupField;
  373.   external 'RSREPORT';
  374. function SetGroupField;
  375.   external 'RSREPORT';
  376. function SetImageDir;
  377.   external 'RSREPORT';
  378. function GetPrinterPort;
  379.   external 'RSREPORT';
  380. function SetPrinterPort;
  381.   external 'RSREPORT';
  382. function GetReportPick;
  383.   external 'RSREPORT';
  384. function SetReportPick;
  385.   external 'RSREPORT';
  386. function GetFirstSortField;
  387.   external 'RSREPORT';
  388. function GetNextSortField;
  389.   external 'RSREPORT';
  390. function SetSortField;
  391.   external 'RSREPORT';
  392. function GetFirstFieldName;
  393.   external 'RSREPORT';
  394. function GetNextFieldName;
  395.   external 'RSREPORT';     
  396. function ChooseTable;
  397.   external 'RSREPORT';
  398. function GetFirstJoinInfo;
  399.   external 'RSREPORT';
  400. function GetNextJoinInfo;
  401.   external 'RSREPORT';
  402. function setJoinInfo;
  403.   external 'RSREPORT';
  404. function GetFirstUserParam;
  405.   external 'RSREPORT';
  406. function GetNextUserParam;
  407.   external 'RSREPORT';
  408. function SetUserParam;
  409.   external 'RSREPORT';
  410. function GetFirstReplace;
  411.   external 'RSREPORT';
  412. function GetNextReplace;
  413.   external 'RSREPORT';
  414. function SetReplace;
  415.   external 'RSREPORT';
  416. function GetPreventEscape;
  417.   external 'RSREPORT';
  418. function SetPreventEscape;
  419.   external 'RSREPORT';
  420. function GetLibrary;
  421.   external 'RSREPORT';
  422. function setLibrary;
  423.   external 'RSREPORT';
  424. function setLibraryDir;
  425.   external 'RSREPORT';
  426. function setPassword;
  427.   external 'RSREPORT';
  428. function setUserName;
  429.   external 'RSREPORT';
  430. function getTestPattern;
  431.   external 'RSREPORT';
  432. function setTestPattern;
  433.   external 'RSREPORT';
  434. function getRunTimeRecord;
  435.   external 'RSREPORT';
  436. function writeRunTimeRecord;
  437.   external 'RSREPORT';
  438. function getStatusEveryPage;
  439.   external 'RSREPORT';
  440. function setStatusEveryPage;
  441.   external 'RSREPORT';
  442. function setStatusFileName;
  443.   external 'RSREPORT';
  444. function SetWhere;
  445.   external 'RSREPORT';
  446. function setSuppressTitle;
  447.   external 'RSREPORT';
  448. function setWinTitle;
  449.   external 'RSREPORT';
  450. function getWinTitle;
  451.   external 'RSREPORT';
  452. function setWinBorderStyle;
  453.   external 'RSREPORT';
  454. function setWinControlBox;
  455.   external 'RSREPORT';
  456. function setWinTop;
  457.   external 'RSREPORT';
  458. function setWinLeft;
  459.   external 'RSREPORT';
  460. function setWinWidth;
  461.   external 'RSREPORT';
  462. function setWinHeight;
  463.   external 'RSREPORT';
  464. function setWinMaxButton;
  465.   external 'RSREPORT';
  466. function setWinMinButton;
  467.   external 'RSREPORT';
  468.  
  469. end.
  470.